9719. Рабочий и зарплата 2

 

Каждый рабочий получает зарплату. Эта зарплата изменялась в течение года. Выведите фамилии рабочих с окончательной зарплатой в конце года в порядке возрастания фамилий.

 

Вход. Каждая строка содержит информацию о работнике: фамилию и зарплату. Если один и тот же работник появляется в списке снова, то это означает что его зарплата была изменена.

 

Выход. Выведите фамилии и зарплаты всех работников на конец года в порядке возрастания фамилий.

 

Пример входа

Пример выхода

Sidorov 100

Mamedov 150

Mamedov 250

Sidorov 110

Ivanov 200

Petrov 120

Sidorov 160

Ivanov 270

Ivanov 270

Mamedov 250

Petrov 120

Sidorov 160

 

 

РЕШЕНИЕ

структуры данных map

 

Анализ алгоритма

Занесем инфомацию о рабочих и их зарплатах в структуру данных map<string, int> m. Затем выведем все записи структуры m.

 

Реализация алгоритма

Объявим структуру данных map.

 

map<string, int> m;

 

Читаем входные данные. Заносим информацию о рабочих в отображение m.

 

while (cin >> s >> salary)

  m[s] = salary;

 

Выводим содержимое отображения m.

 

for (iter = m.begin(); iter != m.end(); iter++)

  cout << iter->first << " " << iter->second << endl;

 

Java реализация – TreeMap

 

import java.util.*;

 

class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    TreeMap<String, Integer> tree = new TreeMap<>();

    while(con.hasNext())

    {

      String s = con.next();

      int salary = con.nextInt();

      tree.put(s, salary);

    }

 

    for(String s : tree.keySet())

      System.out.println(s + " " + tree.get(s));

  

    con.close();

  }

}

 

Java реализация –  HashMap + TreeMap

 

import java.util.*;

 

class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    Map<String,Integer> m = new HashMap<String,Integer>();

    while(con.hasNext())

    {

      String s = con.next();

      int salary = con.nextInt();

      m.put(s, salary);

    }

   

    TreeMap<String, Integer> tree = new TreeMap<>();

    tree.putAll(m);

   

    for(Map.Entry<String, Integer> entry : tree.entrySet())

      System.out.println(entry.getKey() + " " + entry.getValue());

   

    con.close();

  }

}